#!/bin/sh


############################# NOMBRE DE USUARIO #############################

echo 'Ingrese el nombre de usuario: '
read user

# Si no ingresa un usuario dejo el prompt
until [ $user ]; do
	read user;
done

# Me fijo que no exista el usuario
while [ `grep -c '^'$user: /etc/passwd` -ne 0 ]; do
	echo "Usuario $user ya existe, ingrese un nuevo nombre: "
	read user;
done

# El usuario no puede tener mas de 8 digitos
while [ `expr $user : ".*"` -gt 8 ]; do
	echo "El usuario debe tener a lo sumo 8 caracteres. Ingreselo nuevamente: "
	read user;
done

# El usuario debe tener mas de un caracter
while [ `expr $user : ".*"` -le 1 ]; do
	echo "El usuario debe tener al menos dos caracteres. Ingreselo nuevamente: "
	read user;
done

####################### NOMBRE COMPLETO ################################

echo 'Ingrese el nombre completo del usuario []: '

read name

############################ GRUPO #####################################

echo 'Ingrese el nombre del grupo al que pertenecera el usuario ['$user']: '

read group

# El grupo no puede tener mas de 8 digitos
while [ $group ] && [ `expr $group : ".*"` -gt 8 ]; do
	echo "El grupo debe tener a lo sumo 8 caracteres. Ingreselo nuevamente: "
	read group;
done

############################### SHELL #################################

echo 'Ingrese el shell del usuario [/usr/bin/ash]: '

read shell

############################## DIRECTORIO ##############################

echo 'Ingrese el directorio home del usuario [/home/'$user']: '

read dir


############ COMPLETO CON LOS VALORES POR DEFECTO ####################

# Si no ingresa grupo le pongo el default
if [ $group ]; then
	echo >/dev/null;
else
	echo $user | read group;
fi

# Si no ingreso directorio le pongo /home/usuario
if [ $dir ]; then
	echo >/dev/null;
else
	echo "/home/"$user|read dir;
	echo "se setea el directorio: "$dir
fi

# Si no ingresa shell le pongo el ash
if [ $shell ]; then
	echo >/dev/null;
else
	echo "/usr/bin/ash" | read shell;
fi

echo "Las variables son: " $user $group $shell $dir

# Si el directorio ya existe hay q elegir otro
while [ -s $dir ]; do
	echo "El directorio ya existe, elija uno nuevo: "
	read $dir;
done


########################### HAGO EL ALTA #############################

# Me fijo que exista el grupo, si no lo agrego

if [ `grep -c '^'$group: /etc/group` -eq 0 ]; then
	echo "Agregando el grupo..."
	grep -v '^'nogroup: /etc/group|tail -n 1|cut -d : -f 3|read gid
	gid=`expr $gid + 1`
	echo $gid
	echo "$group:*:$gid:">> /etc/group
	sed "/\^\$/d" /etc/group >> /etc/group.tmp
	mv /etc/group.tmp /etc/group;
else
	echo "El grupo ya existe";
fi

# Chequeo que exista el directorio padre, si no lo creo
echo $dir| sed 's/\/[^\/]*$//'|read parentdir
if [ -z $parentdir ] || [ -d $parentdir ]; then
	echo "Existe el directorio padre"
else
	echo "Creando el directorio padre... "$parentdir
	mkdir -p $parentdir
fi

echo "Agregando usuario..."
adduser $user $group $dir
echo "Seteando nombre..."$name
if [ $name ]; then
	chfn $user "$name";
fi
echo "Seteando el shell..."
chsh $user $shell


	
